
package com.hlkj.pay.infrastructure.model.ad;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.hlkj.framework.common.util.json.JsonUtils;
import com.hlkj.framework.mybatis.core.dataobject.BaseDO;
import com.hlkj.pay.dto.ad.AdOtherConfigDto;
import com.hlkj.pay.dto.ad.AdPayTypDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;

import java.math.BigDecimal;
import java.util.List;

/**
 * 广告信息
 * 
 * @TableName t_ad_info_config
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("t_ad_info_config")
public class AdInfoConfigDO extends BaseDO {

    /**
     * 广告id
     */
    @Schema(description = "广告id")
    private Long adId;

    /**
     * 商户号
     */
    @Schema(description = "商户号")
    private String sn;

    /**
     * appid
     */
    @Schema(description = "appid")
    private String appId;

    /**
     * 公钥
     */
    @Schema(description = "公钥")
    private String publicKey;

    /**
     * 私钥
     */
    @Schema(description = "私钥")
    private String privateKey;

    /**
     * 私钥
     */
    @Schema(description = "支付方式")
    private String payTypeJson;
    /**
     * 私钥
     */
    @Schema(description = "广告商appid")
    private String mediaAppId;

    /**
     * 私钥
     */
    @Schema(description = "广告商公钥")
    private String mediaPublicKey;
    /**
     * 私钥
     */
    @Schema(description = "广告商私钥")
    private String mediaPrivateKey;
    /**
     * 私钥
     */
    @Schema(description = "回传扣率")
    private BigDecimal callRate;
    /**
     * 私钥
     */
    @Schema(description = "其他方式")
    private String otherConfigJson;
    /**
     * 优惠劵使用限制
     */
    @Schema(description = "优惠劵使用限制 0 无限制 1 每天一次 2 每周一次 3 每月一次")
    private Integer couponUseLimit;

    /**
     * 私钥
     */
    @Schema(description = "支付方式")
    @TableField(exist = false)
    private List<AdPayTypDto> payTypes;
    /**
     * 其他配置
     */
    @TableField(exist = false)
    private AdOtherConfigDto otherConfigDto;

    public List<AdPayTypDto> getPayTypes() {
        if (!CollectionUtils.isEmpty(payTypes)) {
            return payTypes;
        }
        if (StringUtils.hasText(payTypeJson)) {
            setPayTypes(JsonUtils.parseArray(payTypeJson, AdPayTypDto.class));
        }
        return payTypes;
    }
    public AdOtherConfigDto getOtherConfigDto() {
        if (otherConfigDto!=null) {
            return otherConfigDto;
        }
        if (StringUtils.hasText(otherConfigJson)) {
            setOtherConfigDto(JsonUtils.parseObject(otherConfigJson, AdOtherConfigDto.class));
        }
        return otherConfigDto;
    }
}
